home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / thesource-7.lha / Source / Chunky2Planar.lha / Chunky2Planar / blitter4pass.s < prev    next >
Text File  |  1994-04-04  |  5KB  |  237 lines

  1. ;bltcon0     EQU   $040
  2. ;bltcon1     EQU   $042
  3. ;bltafwm     EQU   $044
  4. ;bltalwm     EQU   $046
  5. bltcpt        EQU   $048
  6. bltbpt        EQU   $04C
  7. bltapt        EQU   $050
  8. bltdpt        EQU   $054
  9. ;bltsize     EQU   $058
  10. ;bltcon0l    EQU   $05B        ; note: byte access only
  11. bltsizv     EQU   $05C
  12. bltsizh     EQU   $05E
  13. ;
  14. ;bltcmod     EQU   $060
  15. ;bltbmod     EQU   $062
  16. ;bltamod     EQU   $064
  17. ;bltdmod     EQU   $066
  18. ;
  19. ;bltcdat     EQU   $070
  20. ;bltbdat     EQU   $072
  21. ;bltadat     EQU   $074
  22.  
  23.  
  24.     xdef    _BlitterConvert
  25.  
  26. ;note: destination bitplanes have to be in this order: 7, 3, 5, 1, 6, 2, 4, 0
  27. ;      and the chunky buffer must be in chip
  28. ;      this routine is best used on machines with a slow CPU and chipram only
  29.  
  30. ; void __asm BlitterConvert (register __d2 UBYTE *chunky,
  31. ;                            register __d3 PLANEPTR raster,
  32. ;                            register __a6 struct GfxBase *GfxBase);
  33.  
  34.  
  35. Width    = 320    ; must be a multiple of 16
  36. Height    = 200
  37. Depth    = 8
  38. BplSize = Width/8*Height
  39. Size    = Width/8*Height*Depth
  40. Pixels    = Width*Height
  41.  
  42.  
  43. _BlitterConvert:
  44.  
  45.     movem.l    d2-d3/a5,-(sp)
  46.  
  47.     jsr    _LVOOwnBlitter(a6)
  48.     lea    ($dff000),a5
  49.  
  50.  
  51.     ;PASS-1
  52.  
  53.     ;subpass1
  54.     jsr    _LVOWaitBlit(a6)
  55.  
  56.     moveq    #-1,d0
  57.     move.l    d0,bltafwm(a5)
  58.  
  59.     move.w    #0,bltdmod(a5)
  60.  
  61.     move.l    d2,bltapt(a5)        ; Chunky
  62.     addq.l    #8,d2
  63.     move.l    d2,bltbpt(a5)        ; Chunky+8
  64.  
  65.     move.l    #Buff1,bltdpt(a5)
  66.  
  67.     move.w    #8,bltamod(a5)
  68.     move.w    #8,bltbmod(a5)
  69.  
  70.     move.w    #%1111111100000000,bltcdat(a5)
  71.     move.l    #$0DE48000,bltcon0(a5)    ;D=AC+Bc [C const]
  72.  
  73.     move.w    #Pixels/16,bltsizv(a5)
  74.     move.w    #4,bltsizh(a5)        ;do blit
  75.  
  76.     ;subpass2
  77.     jsr    _LVOWaitBlit(a6)
  78.  
  79.     add.l    #Size-8-2-8,d2
  80.     move.l    d2,bltapt(a5)        ; Chunky+Size-8-2
  81.     addq.l    #8,d2
  82.     move.l    d2,bltbpt(a5)        ; Chunky+Size-2
  83.  
  84.     move.l    #Buff1+Size-2,bltdpt(a5)
  85.  
  86.     move.l    #$8DE40002,bltcon0(a5)    ;D=AC+Bc [C const], descending mode
  87.  
  88.     move.w    #4,bltsizh(a5)        ;do blit
  89.  
  90.  
  91.     ;PASS-2
  92.  
  93.     ;subpass1
  94.     jsr    _LVOWaitBlit(a6)
  95.  
  96.     move.l    #Buff1,bltapt(a5)
  97.     move.l    #Buff1+4,bltbpt(a5)
  98.  
  99.     move.l    #Buff2,bltdpt(a5)
  100.  
  101.     move.w    #4,bltamod(a5)
  102.     move.w    #4,bltbmod(a5)
  103.  
  104.     move.w    #%1111000011110000,bltcdat(a5)
  105.     move.l    #$0DE44000,bltcon0(a5)    ;D=AC+Bc [C const]
  106.  
  107.     move.w    #Pixels/8,bltsizv(a5)
  108.     move.w    #2,bltsizh(a5)        ;do blit
  109.  
  110.     ;subpass2
  111.     jsr    _LVOWaitBlit(a6)
  112.  
  113.     move.l    #Buff1+Size-2-4,bltapt(a5)
  114.     move.l    #Buff1+Size-2,bltbpt(a5)
  115.  
  116.     move.l    #Buff2+Size-2,bltdpt(a5)
  117.  
  118.     move.l    #$4DE40002,bltcon0(a5)    ;D=AC+Bc [C const], descending mode
  119.  
  120.     move.w    #2,bltsizh(a5)        ;do blit
  121.  
  122.  
  123.     ;PASS-3
  124.  
  125.     ;subpass1
  126.     jsr    _LVOWaitBlit(a6)
  127.  
  128.     move.l    #Buff2,bltapt(a5)
  129.     move.l    #Buff2+2,bltbpt(a5)
  130.  
  131.     move.l    #Buff3,bltdpt(a5)
  132.  
  133.     move.w    #2,bltamod(a5)
  134.     move.w    #2,bltbmod(a5)
  135.     move.w    #Pixels/4,bltsizv(a5)
  136.     move.w    #%1100110011001100,bltcdat(a5)
  137.  
  138.     move.l    #$0DE42000,bltcon0(a5)    ;D=AC+Bc [C const]
  139.  
  140.     move.w    #1,bltsizh(a5)        ;do blit
  141.  
  142.     ;subpass2
  143.     jsr    _LVOWaitBlit(a6)
  144.  
  145.     move.l    #Buff2+Size-2-2,bltapt(a5)
  146.     move.l    #Buff2+Size-2,bltbpt(a5)
  147.  
  148.     move.l    #Buff3+Size-2,bltdpt(a5)
  149.  
  150.     move.l    #$2DE40002,bltcon0(a5)    ;D=AC+Bc [C const], descending mode
  151.     move.w    #1,bltsizh(a5)        ;do blit
  152.  
  153.  
  154.     ;PASS-4
  155.  
  156.     ;subpass1
  157.     jsr    _LVOWaitBlit(a6)
  158.  
  159.     move.l    #Buff3,bltapt(a5)
  160.     move.l    #Buff3+1*Size/8,bltbpt(a5)
  161.  
  162.     move.l    d3,bltdpt(a5)        ; Planes
  163.     move.w    #0,bltamod(a5)
  164.     move.w    #0,bltbmod(a5)
  165.     move.w    #Size/16,bltsizv(a5)    ;/8???
  166.     move.w    #%1010101010101010,bltcdat(a5)
  167.  
  168.     move.l    #$0DE41000,bltcon0(a5)    ;D=AC+Bc [C const]
  169.     move.w    #1,bltsizh(a5)        ;do blit
  170.  
  171.     jsr    _LVOWaitBlit(a6)
  172.     move.l    #Buff3+2*Size/8,bltapt(a5)
  173.     move.l    #Buff3+3*Size/8,bltbpt(a5)
  174.     move.w    #1,bltsizh(a5)
  175.  
  176.     jsr    _LVOWaitBlit(a6)
  177.     move.l    #Buff3+4*Size/8,bltapt(a5)
  178.     move.l    #Buff3+5*Size/8,bltbpt(a5)
  179.     move.w    #1,bltsizh(a5)
  180.  
  181.     jsr    _LVOWaitBlit(a6)
  182.     move.l    #Buff3+6*Size/8,bltapt(a5)
  183.     move.l    #Buff3+7*Size/8,bltbpt(a5)
  184.     move.w    #1,bltsizh(a5)
  185.  
  186.     ;subpass2
  187.     jsr    _LVOWaitBlit(a6)
  188.  
  189.     move.l    #Buff3+7*Size/8-2,bltapt(a5)
  190.     move.l    #Buff3+8*Size/8-2,bltbpt(a5)
  191.  
  192.     add.l    #Size-2,d3
  193.     move.l    d3,bltdpt(a5)        ; Planes+Size-2
  194.  
  195.     move.l    #$1DE40002,bltcon0(a5)    ;D=AC+Bc [C const], descending mode
  196.     move.w    #1,bltsizh(a5)        ;do blit
  197.  
  198.     jsr    _LVOWaitBlit(a6)
  199.     move.l    #Buff3+5*Size/8-2,bltapt(a5)
  200.     move.l    #Buff3+6*Size/8-2,bltbpt(a5)
  201.     move.w    #1,bltsizh(a5)        
  202.  
  203.     jsr    _LVOWaitBlit(a6)
  204.     move.l    #Buff3+3*Size/8-2,bltapt(a5)
  205.     move.l    #Buff3+4*Size/8-2,bltbpt(a5)
  206.     move.w    #1,bltsizh(a5)        
  207.  
  208.     jsr    _LVOWaitBlit(a6)
  209.     move.l    #Buff3+1*Size/8-2,bltapt(a5)
  210.     move.l    #Buff3+2*Size/8-2,bltbpt(a5)
  211.     move.w    #1,bltsizh(a5)        
  212.  
  213.     jsr    _LVODisownBlitter(a6)
  214.  
  215.     movem.l    (sp)+,d2-d3/a5
  216.  
  217.     rts
  218.  
  219.  
  220.          SECTION  segment1,BSS,chip        ; MUST BE IN CHIP !!!!!
  221.  
  222. ;Chunky  ds.b Size    ;Chunky buffer
  223. Buff1    ds.b Size     ;Intermediate buffer 1
  224. Buff2    ds.b Size    ;Intermediate buffer 2
  225. Buff3    ds.b Size    ;Intermediate buffer 3
  226.  
  227. ;Planes    ds.b Size+100    ;Planes as used on screen
  228. ;L29    =Planes+BplSize
  229. ;L30    =L29+BplSize
  230. ;L31    =L30+BplSize
  231. ;L32    =L31+BplSize
  232. ;L33    =L32+BplSize
  233. ;L34    =L33+BplSize
  234. ;L35    =L34+BplSize
  235.  
  236.     END
  237.